package com.ruoyi.system.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.system.domain.Phenologicalperiods;
import com.ruoyi.system.mapper.CropsMapper;
import com.ruoyi.system.domain.Crops;
import com.ruoyi.system.service.ICropsService;

/**
 * 作物管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-07-24
 */
@Service
public class CropsServiceImpl implements ICropsService 
{
    @Autowired
    private CropsMapper cropsMapper;

    /**
     * 查询作物管理
     * 
     * @param cropid 作物管理主键
     * @return 作物管理
     */
    @Override
    public Crops selectCropsByCropid(Long cropid)
    {
        return cropsMapper.selectCropsByCropid(cropid);
    }

    /**
     * 查询作物管理列表
     * 
     * @param crops 作物管理
     * @return 作物管理
     */
    @Override
    public List<Crops> selectCropsList(Crops crops)
    {
        return cropsMapper.selectCropsList(crops);
    }

    /**
     * 新增作物管理
     * 
     * @param crops 作物管理
     * @return 结果
     */
    @Transactional
    @Override
    public int insertCrops(Crops crops)
    {
        int rows = cropsMapper.insertCrops(crops);
        insertPhenologicalperiods(crops);
        return rows;
    }

    /**
     * 修改作物管理
     * 
     * @param crops 作物管理
     * @return 结果
     */
    @Transactional
    @Override
    public int updateCrops(Crops crops)
    {
        cropsMapper.deletePhenologicalperiodsByCropid(crops.getCropid());
        insertPhenologicalperiods(crops);
        return cropsMapper.updateCrops(crops);
    }

    /**
     * 批量删除作物管理
     * 
     * @param cropids 需要删除的作物管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteCropsByCropids(Long[] cropids)
    {
        cropsMapper.deletePhenologicalperiodsByCropids(cropids);
        return cropsMapper.deleteCropsByCropids(cropids);
    }

    /**
     * 删除作物管理信息
     * 
     * @param cropid 作物管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteCropsByCropid(Long cropid)
    {
        cropsMapper.deletePhenologicalperiodsByCropid(cropid);
        return cropsMapper.deleteCropsByCropid(cropid);
    }

    /**
     * 新增作物物候期管理信息
     * 
     * @param crops 作物管理对象
     */
    public void insertPhenologicalperiods(Crops crops)
    {
        List<Phenologicalperiods> phenologicalperiodsList = crops.getPhenologicalperiodsList();
        Long cropid = crops.getCropid();
        if (StringUtils.isNotNull(phenologicalperiodsList))
        {
            List<Phenologicalperiods> list = new ArrayList<Phenologicalperiods>();
            for (Phenologicalperiods phenologicalperiods : phenologicalperiodsList)
            {
                phenologicalperiods.setCropid(cropid);
                list.add(phenologicalperiods);
            }
            if (list.size() > 0)
            {
                cropsMapper.batchPhenologicalperiods(list);
            }
        }
    }
}
